import java.util.*;

/**
 * @author LKQ
 * @date 2022/7/3 10:14
 * @description
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        int i = solution.nextGreaterElement(13462987);
        System.out.println(i);
    }
    public int nextGreaterElement(int n) {
        char[] s = String.valueOf(n).toCharArray();
        int i = s.length - 2;
        // 从右到左遍历，获取第一位 s[i] < s[i+1]的 i
        while (i >= 0 && s[i] >= s[i + 1]) {
            i--;
        }
        if (i < 0) {
            // 说明整个数排列已经最大了
            return -1;
        }
        // 从右到左遍历，获取 第一位大于 s[i]的值
        int j = s.length - 1;
        while (j >= i && s[i] >= s[j]) {
            j--;
        }
        // 交换i, j
        swap(s, i, j);
        // 将j之后的字符翻转
        reverse(s, i + 1);
        // 交换之后可能会超过32位整数
        long ans = Long.valueOf(new String(s));
        return ans > Integer.MAX_VALUE ? -1 : (int) ans;

    }
    public static void swap(char[] s, int i, int j) {
        char temp = s[i];
        s[i] = s[j];
        s[j] = temp;
    }
    public static void reverse(char[] s, int start) {
        int end = s.length - 1;
        while (start < end) {
            swap(s, start, end);
            start++;
            end--;
        }
    }
}
